package com.cxhc.system.mapper.app;

import com.cxhc.system.domain.app.CmRoomInfo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 房间信息Mapper接口
 * 
 * @author Dhq
 * @date 2024-11-14
 */
public interface CmRoomInfoMapper 
{
    /**
     * 查询房间信息
     * 
     * @param id 房间信息主键
     * @return 房间信息
     */
    public CmRoomInfo selectCmRoomInfoById(Long id);

    /**
     * 根据审核人id查询房间信息
     * @param checkNameId 审核人Id
     * @return 房间信息
     */
    public List<Map<String,String>> selectRoomByCheckNameId(String checkNameId);

    /**
     * 查询房间信息列表
     * 
     * @param cmRoomInfo 房间信息
     * @return 房间信息集合
     */
    public List<CmRoomInfo> selectCmRoomInfoList(CmRoomInfo cmRoomInfo);


    public List<CmRoomInfo> selectCmRoomInfoListAndHouseholdInfo(CmRoomInfo cmRoomInfo);

    /**
     * 新增房间信息
     * 
     * @param cmRoomInfo 房间信息
     * @return 结果
     */
    public int insertCmRoomInfo(CmRoomInfo cmRoomInfo);

    /**
     * 修改房间信息
     * 
     * @param cmRoomInfo 房间信息
     * @return 结果
     */
    public int updateCmRoomInfo(CmRoomInfo cmRoomInfo);

    /**
     * 删除房间信息
     * 
     * @param id 房间信息主键
     * @return 结果
     */
    public int deleteCmRoomInfoById(Long id);

    /**
     * 批量删除房间信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCmRoomInfoByIds(Long[] ids);

    /**
     * 查询公寓房间数量
     *
     * @return 公寓房间数量
     * @param isOperate
     */
    @MapKey("apartId")
    public Map<String, Map<String,Object>> selectRoomNumByApartId(Integer isOperate);

    /**
     * 查询房间信息
     *
     * @param apartId 公寓Id
     * @param roomNo 房间号
     * @return 房间信息
     */
    public CmRoomInfo selectCmRoomInfoByApartIdAndRoomNo(@Param("apartId") Long apartId, @Param("roomNo")String roomNo);
}
